19868
24519
Mám pole statistický název jako
jablko
X
banán
Y
Kiwi
z
Potřebuji dát jablko, banán a kiwi do pole Fruits a X, Y a Z do pole zvaného abecedy.
Nějaký jednoduchý C # mechanismus, prosím? 
Použijte IEnumerable  .Where přetížení, které dodává index.
var ovoce = statsname.Where ((s, i) => i% 2 == 0) .ToArray ();
var alphabets = statsname.Where ((s, i) => i% 2! = 0) .ToArray ();
|
Ukradené z Jak získat alternativní prvky pomocí Enumerable v C #
var ovoce = myArray.Where ((t, i) => i% 2 == 0) .ToArray ();
var alphabetets = myArray.Where ((t, i) => i% 2 == 1) .ToArray ();
|
Pokud jsem vám správně porozuměl, otázka, co chcete, je velmi jednoduchá:
Chcete dát ovoce do řady ovoce a to samé pro abecedy a ty se objevují alternativně v poli statsname, takže:
pro (int i = 0, j = 0; i  list = new List  () {"apple", "X", "banana", "Y", "Kiwi", "z"};
var result = list.Select ((l, i) => new {l, i})
.GroupBy (p => p.i% 2)
.Select (x => x.Select (v => v.l) .ToList ())
.ToList ();
Pak máte seznam seznamů:
|
list  ovoce = nový List  ();
list  alphabet = new List  ();
for (int i = 0; i  everyOther  (kolekce IEnumerable )
{
using (var e = collection.GetEnumerator ()) {
while (e.MoveNext ()) {
výnos výnosu e.Current;
e.MoveNext (); // přeskočit jeden
}
}
}
Můžete použít System.Linq.Skip k přeskočení prvního prvku.
string [] words = "apple X banana Y Kiwi z" .Split ();
var ovoce = everyOther (slova);
var alphabetets = everyOther (words.Skip (1));
Stačí je použít jako novou kolekci nebo na ně zavolat .ToArray () nebo .ToList ():
foreach (řetězec f v ovoci)
Console.WriteLine (f);
string [] anArray = fruits.ToArray (); // pomocí System.Linq
Nyní máte to, co potřebujete.
Iterátory jsou metody, které poskytují návratnost, viz Iterátory (C # Programovací průvodce). To je velmi silná vlastnost jazyka. Můžeš:
přeskočit prvky
zdobí prvky
změnit pořadí
zřetězit sekvence (viz System.Linq.Concat)
...
|
Zde je nějaký pracovní kód, doufejme, že vám to pomůže:
pomocí systému;
pomocí System.Collections.Generic;
pomocí System.IO;
pomocí System.Linq;
pomocí System.Text;
pomocí System.Threading.Tasks;
jmenný prostor ReadFile
{
třídní program
{
static void ReadFile (string filePath, List  custumerNames, List  phoneNumbers)
{
string line = string.Empty;
var fileStream = nový StreamReader (filePath);
bool isPhoneNumber = true;
while ((line = fileStream.ReadLine ())! = null)
{
if (isPhoneNumber)
{
phoneNumbers.Add (Convert.ToInt32 (line));
isPhoneNumber = false;
}
jiný
{
custumerNames.Add (řádek);
isPhoneNumber = true;
}
}
fileStream.Close ();
}
static void Main (řetězec [] args)
{
Console.WriteLine ("Zahájeno čtení souboru ...");
List  custumersNamesList = nový List  ();
List  custumersPhonesNumbers = nový seznam  ();
ReadFile ("SampleFile.txt", custumersNamesList, custumersPhonesNumbers);
// Za předpokladu, že oba seznamy mají stejnou délku.
pro (int i = 0; i